package pe.edu.unmsm.fisi.sisconteg.domain.model;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

/**
 * @author Carlos y Marlon
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "tb_certificado", catalog = "bdsisconteg")
public class Certificado implements java.io.Serializable {

	private Long idCertificado;
	private String nombre;
	private List<EgresadoCertificado> egresadoCertificados = 
			new ArrayList<EgresadoCertificado>(0);

	public Certificado() {
	}

	public Certificado(String nombre,
			List<EgresadoCertificado> egresadoCertificados) {
		this.nombre = nombre;
		this.egresadoCertificados = egresadoCertificados;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "C_ID_CERTIFICADO", unique = true, nullable = false)
	public Long getIdCertificado() {
		return this.idCertificado;
	}

	public void setIdCertificado(Long idCertificado) {
		this.idCertificado = idCertificado;
	}

	@Column(name = "T_NOMBRE_CERTIFICADO", length = 150)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "certificado")
	@Fetch(value = FetchMode.SUBSELECT)
	public List<EgresadoCertificado> getEgresadoCertificados() {
		return this.egresadoCertificados;
	}

	public void setEgresadoCertificados(
			List<EgresadoCertificado> egresadoCertificados) {
		this.egresadoCertificados = egresadoCertificados;
	}

}
